Analiza danych pasazerow Titanica¶


RMS Titanic - jak zapewne wszyscy wiedza, ale na wszelki wypadek przypomne, zatonal o godzinie 02:20 w nocy z 14 na 15 kwietnia 1912 roku po kolizji z gora lodowa na Atlantyku, podczas swego dziewiczego rejsu z Europy do Nowego Yorku. Z 2208 osob na pokladzie, ocalalo tylko 712, z tego 6 zmarlo zanim statki z ocalonymi doplynely do Nowego Yorku.

titanic i gora.jpg

Trasa statku¶

Poczatkowo rejs Titanica przebiegal bezproblemowo. Statek wyplynal o czasie z portu Southampton w Wielkiej Brytanii kierujac sie do Cherbourga we Francji. Poniewaz ten port byl zbyt plytki, aby przyjac Titanica, wiec pasazerow i ladunek dostarczono na poklad przy pomocy tendera (malego statku pomocniczego) S.S. "Normandic" (ktory nota bene do dzis zachowujac niemal oryginalny wyglad, plywa po Sekwanie jako statek wycieczkowy). Nastepnie Titanic poplynal do Queenstown w Irlandii, skad po zabraniu reszty pasazerow, 11 kwietnia rano wyruszyl w rejs przez Atlantyk do Nowego Yorku.

TitanicRoute.jpg

Pasazerowie¶

Standardowy bilet III klasy kosztowal miesieczna wyplate robotnika wykwalifikowanego. Bilet II klasy - miesieczna wyplate nauczyciela lub urzednika. Zas I klasy - miesieczna wyplate lekarza lub inzyniera. Mowimy tu oczywiscie o miesiecznych zarobkach w Stanach Zjednoczonych, w Europie pensje byly kilkukrotnie nizsze. W klasie I oprocz standardowych kabin, znajdowalo sie rowniez kilka apartamentow o cenach przyprawiajacych o zawrot glowy. Korzystali z nich glownie milionerzy podrozujacy ze swoimi sluzacymi, kamerdynerami i pokojowkami. Oczywiscie za kazda osobe ze sluby musieli uiscic oplate jak za standardowy bilet I klasy.

Z tego tez powodu, klasa I podrozowaly glownie osoby bardzo zamozne i z tak zwanego "towarzystwa". Klase II zajmowali drobni przemyslowcy, duchowni, prawnicy, dziennikarze, nauczyciele oraz turysci z Europy. W klasie III podrozowali praktycznie wylacznie emigranci zarobkowi. Wiekszosc sposrod nich stanowili Irlandczycy, Anglicy, Szwedzi, ale bylo takze 50 Bulgarow, 37 Chowartow, 70 Libanczykow i 80 Syryjczykow, z ktorych wiekszosc stanowili chrzescijanie uciekajacy z Imperium Osmanskiego przed przesladowaniami religijnymi.

Podczas calego rejsu, pasazerowie klasy III byli odseparowani i zamknieci w swojej czesci statku (choc dysponowali tam jadalnia i mieli wlasny poklad spacerowy na ktorym odbywaly sie tance i spotkania towarzyskie). Nie bylo to widzimisie armatora, ale wymog Amerykanskiego Urzedu Emigracyjnego, gdyz po doplynieciu do USA, pasazerowie klasy I i II normalnie schodzili na lad, natomiast pasazerowie klasy III byli przewozeni na wyspe Elis, gdzie robiono im zdjecia, zbierano odciski palcow i sprawdzano czy nie figuruja w kartotekach poszukiwanych przestepcow lub pacjentow szpitali psychiatrycznych. Sprawdzano tez, czy nie maja gruzlicy, jaglicy (zakaznej choroby oczu wystepujacej do dzis w biednych krajach), czy nie sa poligamistami lub anarchistami. Dopiero po takim screeningu mogli zaczac swoje nowe, piekne zycie w USA.

Rozmieszczenie pasazerow na statku¶

titanic-przekroj.jpg

Poklady statku oznaczono literami alfabetu, od najwyzszego pokladu lodziowego, spelniajacego glownie funkcje pokladu spacerowego, a w razie niebezpieczenstwa i ewakuacyjnego. Poprzez poklad A, gdzie miescily sie salony wypoczynkowe, biblioteka i palarnia klasy pierwszej, B i C w ktorych znajdowaly sie kabiny klasy pierwszej i drugiej, D - jadalnie klasy pierwszej i drugiej, oraz E, F i G przeznaczone glownie dla kabin klas drugiej, trzeciej i pomieszczen zalogi. Nizej, czesciowo juz ponizej linii wody, miescily sie ladownie, maszynownie i kotlownie.

Na powyzszym schemacie Titanica kolorem zoltym oznaczono pomieszczenia I klasy, kolorem zielonym - pomieszczenia II klasy, a na brazowo - pomieszczenia zajmowane przez pasazerow III klasy. Jak widac pasazerowie tej klasy byli rozdzieleni. Samotni mezczyzni zajmowali czesc dziobowa statku. Zas rodziny oraz samotne matki z dziecmi, plynace do swoich mezow, ktorzy wyemigrowali do USA wczesniej i teraz byli w stanie oplacic swoim rodzinom podroz, aby te do nich dolaczyly, zajmowaly miejsce na rufie.

Wypadek¶

Feralnego dnia, 14 kwietnia, na kolacje w pierwszej klasie podano Filet Migon (najdelikatniejszy stek ciety ze srodkowej czesci poledwicy) z dodatkiem gesiej watrobki i karczochow, podlany sosem truflowym. A do przeplukania gardla - sorbet z szampana i rumu. W trzeciej klasie byly za to krakersy z serem i szynka. To i tak niezle, bo na wiekszosci statkow, pasazerowie trzeciej klasy na caly czas podrozy, musieli miec wlasne jedzenie. Gdy po kolacji pasazerowie poszli juz spac, o godzinie 23:40 zauwazono na wprost statku gore lodowa. Statek skrecil ostro w lewo i pol minuty pozniej otarl sie o nia prawa burta. Napierajaca masa lodu powyginala stalowe plyty poszycia na dlugosci ok. 90 metrow, naprezenia zerwaly dziesiatki nitow utrzymujacych razem blachy i woda zaczela sie wlewac do statku niewielkimi (niewielkimi, bo sumaryczna ich wielkosc minimalnie przekraczala 1 metr kwadratowy) szczelinami do wnetrza kadluba. Problem jednak polegal na tym, ze woda zalewala na raz szesc pierwszych przedzialow, a statek mogl utrzymac sie na powierzchni z zalanymi maksymalnie czterema.

Cross_section_of_the_Titanic.jpg

Ewakuacja pasazerow¶

Po zatrzymaniu silnikow i 40 minutowej inspekcji uszkodzen przez kapitana wraz z ciesla okretowym i glownym konstruktorem statku, inzynierem Thomasem Andrewsem, uznano ze powstalych w kadlubie szczelin nie da sie zatkac, a pompy nie poradza sobie z naplywajaca do wnetrza woda. Obliczono, ze statek zatonie maksymalnie w ciagu dwoch godzin. Kapitan zarzadzil wiec ewakuacje. Ogloszono alarm, obudzono pasazerow, rozdano wszystkim kamizelki ratunkowe i rozpoczeto opuszczanie szalup. Aby uspokoic zdenerwowanych pasazerow, orkiestra zaczela grac. Pierwsza szalupe spuszczono o godzinie 00:40 (godzine od momentu kolizji). Nastepne opuszczano juz w odstepach pieciominutowych.

Ilosc szalup ratunkowych¶

Po katastrofie formulowano zarzuty o zbyt malej ilosci lodzi ratunkowych. Otoz Titanic dysponowal nastepujaca iloscia srodkow ratunkowych: dwie male lodzie, o numerach 1 i 2, ktore zwykle sluzyly do komunikacji z ladem i ewentualnego przewozu niewielkiej ilosci ludzi lub ladunkow - kazda z nich mogla pomiescic maksymalnie 40 osob. 14 duzych lodzi wioslowych, o numerach 2 - 16, z ktorych kazda mogla pomiescic 65 osob. Oraz 4 tratwy korkowe z podnoszonymi brezentowymi burtami, z ktorych kazda mogla pomiescic maksymalnie 47 osob. Owczesne przepisy uzaleznialy ilosc lodzi nie od ilosci pasazerow, ale od tonazu (wypornosci) statku. I Titanic spelnial te normy z nawiazka.

Co wiecej, jego projektanci uznali za praktycznie niemozliwe szybkie zatoniecie tak duzego statku i zaprojektowali srodki ratunkowe na o wiele bardziej prawdopodobne zdarzenia, takie jak awaria maszyn na pelnym morzu czy zderzenie z innym statkiem. W jednym i drugim przypadku gdyby kontynuacja dalszej podrozy byla niemozliwa, lodzie mialy posluzyc jedynie do przewozu pasazerow pomiedzy Titaniciem, a statkami wyslanymi przez linie White Star w ciagu kilku lub najdalej kilkunastu godzin. W takim przypadku ilosc lodzi ratunkowych na Titanicu byla az nadto zadowalajaca. Jednak w naszym, konkretnym przypadku starcia z gora lodowa, ilosc szalup okazala sie tragicznie niewystarczajaca.

Ilosc ludzi w szalupach¶

To, ze opuszczane do wody lodzie byly nie do konca wypelnione ludzmi, wynikalo z owczesnych przepisow. Otoz lodzie, podczas opuszczania nie mogly byc w pelni zaladowane, aby nie zerwac zurawikow z ktorych byly opuszczane. Reszte pasazerow, bedac juz na wodzie, mialy zabrac z otwieranych drzwi burtowych. O tym, ze przepisy te mialy sens, swiadczy zdarzenie podczas opuszczania jednych z ostatnich lodzi, ktore byly juz maksymalnie wypelnione pasazerami. Wtedy to lodz numer 13 z 65 osobami na pokladzie (wg. "Encyclopedia Titanica", lub 55 osobami wg. Wikipedii), podczas opuszczania uszkodzila zurawiki na tyle, ze przesuwajace sie w nich liny zaciely sie i lodz zawisla prawie metr nad woda. A poniewaz tuz obok niej spuszczana byla lodz numer 15 z 68 osobami, o maly wlos nie doszlo do zderzenia tych lodzi i zmiazdzenia pasazerow. Aby tego uniknac, w ostatniej chwili marynarze przecieli liny podtrzymujace pierwsza lodz, ktora z impetem spadla do wody. Komisje (zarowno angielska jak i amerykanska) badajace potem wypadek, nie uznaly dzialan oficerow nadzorujacych spuszczanie lodzi za blad. Na ponizszej fotografi widac jak wyglada przechodzenie pasazerow przez drzwi burtowe do lodzi. To, ze na Titanicu ich ostatecznie nie otworzono i nie wypelniono kazdej ze znajdujacych sie na wodzie szalup do maksimum pasazerami, to juz inna historia.

ladowanie pasazerow wg instrukcji.jpg

Fakt ze lodzie, zwlaszcza te spuszczane jako pierwsze, nie byly wypelnione w wiekszym stopniu, wynikal rowniez z tego, ze pasazerowie nie bardzo kwapili sie by opuscic spokojny i rozswietlony poklad najwiekszego i najbardziej luksusowego statku swiata, tylko po to, aby w srodku nocy przesiasc sie do malej, drewnianej lupinki, chyboczacej sie na wysokosci osmiu pieter ponad lodowatymi falami Atlantyku. Tym bardziej, ze nie widac bylo zadnego realnego zagrozenia. Dlatego tez niektore panie musiano wrecz sila wpychac do pierwszych szalup. Oczywiscie sytuacja zmienila sie diametralnie po kilkudziesieciu minutach, gdy widac juz bylo wyraznie, ze statek tonie, ale wtedy wiekszosc lodzi ratunkowych byla juz na morzu.

Grafika pokazujaca kolejne etapy toniecia statku¶

Titanic_sinking_gif.gif

Jak widac, dopiero po uplywie godziny od momentu kolizji mozna bylo dostrzec pierwsze, niepokojace oznaki, ze statek tonie. Potem poszlo juz szybko.

Ostatnie tratwy: A i B nie zostaly zwodowane, ale po prostu zmyte przez fale z pokladu zanurzajacego sie juz Titanica. Tratwa A nabrala duzo wody i pasazerowie, ktorym udalo sie do niej doplynac i wejsc, musieli stac po kolana w wodzie. Przeszlo polowa z nich zmarla z wyziebienia. Tratwa B z kolei przewrocila sie do gory dnem i tylko kilkanascie osob zdolalo sie na nia wdrapac i jakos utrzymac. Byl miedzy nimi drugi oficer Lightoller, ktory dysponowal gwizdkiem. To ich uratowalo, gdyz wlasnie jego gwizdek uslyszaly ekipy ratunkowe, ktore juz zawracaly uznajac, ze nie znajda wiecej zywych rozbitkow. Jak widac gwizdek daje plus jeden do ratunku.


O Danych:¶

Zbior danych zawiera informacje o pasazerach RMS Titanic. Dane obejmuja takie atrybuty jak klasa podrozy, wiek, plec, liczba rodzenstwa/malzonkow na pokladzie, liczba rodzicow/dzieci na pokladzie, cena biletu oraz miejsce zaokretowania. Zbior zawiera takze informacje o tym, czy pasazer przezyl katastrofe.

Kolumny:

  • pclass - Klasa biletu
  • survived - Czy pasażer przeżył katastrofę
  • name - Imię i nazwisko pasażera
  • sex - Płeć pasażera
  • age - Wiek pasażera
  • sibsp - Liczba rodzeństwa/małżonków na pokładzie
  • parch - Liczba rodziców/dzieci na pokładzie
  • ticket - Numer biletu
  • fare - Cena biletu
  • cabin - Numer kabiny
  • embarked - Port, w którym pasażer wszedł na pokład (C = Cherbourg, Q = Queenstown, S = Southampton)
  • boat - Numer łodzi ratunkowej
  • body - Numer ciała (jeśli pasażer nie przeżył i ciało zostało odnalezione)
  • home.dest - Miejsce docelowe
In [1]:
# sekcja importowa

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
import matplotlib.patches as mpatches
from matplotlib.patches import Patch
import numpy as np
from scipy.interpolate import make_interp_spline
In [2]:
# wczytanie danych

df = pd.read_csv('26__titanic.csv', sep=",")

Pytania i hipotezy:¶

Patrzac na zbior danych od razu nasuwa sie kilka pytan:

  1. Jaki wplyw na zwiekszenie szansy przezycia mial wiek? Moze mlodsi i bardziej sprawni mieli wiecej szans na dostanie sie do lodzi ratunkowych niz ludzie starsi, bardziej niedolezni?
  2. Czy plec miala znaczenie? Moze mezczyzni rycersko przepuszczali panie przodem?
  3. Czy znaczenie miala przynaleznosc do danej klasy posazerow? A jesli tak, to w jaki sposob?
  4. Czy posiadanie wspolmalzonka lub rodzenstwa na pokladzie zwiekszalo szanse na przezycie? (Byc moze brat pomagal siostrze, a maz zonie?)
  5. A moze posiadanie dzieci lub rodzicow zmniejszalo szanse ocalenia? (Bo trzeba bylo sie nimi dodatkowo zajmowac, opiekowac i pilnowac?)
  6. Ciekawe, czy jest jakis zwiazek pomiedzy numerem szalupy a klasa w ktorej sie podrozowalo lub plcia, a moze wiekiem? A jesli tak, to jaki?
  7. Czy to, po ktorej stronie statku (prawej lub lewej) czekalo sie na wejscie do szalupy, mialo jakis wplyw na zwiekszanie szans na ocalenie?

Postaram sie znalesc odpowiedzi na te pytania podczas dalszej analizy.


1. Wnioski z analizy podstawowych informacji o danych:¶

Bingo! Mamy 1309 rekordow, czyli brakuje nam jedynie danych o 8 pasazerach (to duzo mniej niz 1%). Druga, jeszcze lepsza informacja jest taka, ze mamy pelen komplet danych najbardziej nas interesujacych, czyli o pasazerach, ktorzy przezyli katastrofe. Jak bowiem wiemy, katastrofe przezylo w sumie 712 osob, z tego 212 czlonkow zalogi, a my mamy dane 500 ocalonych pasazerow. Czyli pod tym wzgledem nasze dane sa kompletne i mozemy na nich dzialac. Bedziemy wiec mogli odpowiedziec na wszystkie postawione powyzej pytania i hipotezy.

Co prawda u 15% ocalonych nie jest znany ich wiek, a w 5% nie znamy numeru szalupy do ktorej sie dostali, ale nie sa to ilosci, ktore zawazylyby zdecydowanie na jakosci naszej analizy. Znacznie gorzej jest w przypadku zajmowanej podczas rejsu kabiny. Tutaj brakujace dane stanowia przeszlo 60% jesli chodzi o ocalalych i az 90% jesli chodzi o zmarlych. Na szczescie akurat te dane nie beda nam potrzebne w naszych dalszych dociekaniach.

In [3]:
# kilka losowych rekordow, zeby zorientowac sie, z czym sie mierzymy
df.sample(5)
Out[3]:
pclass survived name sex age sibsp parch ticket fare cabin embarked boat body home.dest
466 2.0 0.0 Kantor, Mr. Sinai male 34.0 1.0 0.0 244367 26.0000 NaN S NaN 283.0 Moscow / Bronx, NY
360 2.0 1.0 Caldwell, Mr. Albert Francis male 26.0 1.0 1.0 248738 29.0000 NaN S 13 NaN Bangkok, Thailand / Roseville, IL
842 3.0 0.0 Hagland, Mr. Ingvald Olai Olsen male NaN 1.0 0.0 65303 19.9667 NaN S NaN NaN NaN
181 1.0 1.0 Leader, Dr. Alice (Farnham) female 49.0 0.0 0.0 17465 25.9292 D17 S 8 NaN New York, NY
258 1.0 1.0 Serepeca, Miss. Augusta female 30.0 0.0 0.0 113798 31.0000 NaN C 4 NaN NaN
In [4]:
# ile mamy w bazie osob ktore przezyly, a ile tych, ktore nie przezyly?
df['survived'].value_counts()
Out[4]:
0.0    809
1.0    500
Name: survived, dtype: int64
In [5]:
# jak rozkladaja sie brakujace dane w obu tych grupach (survived i nonsurvived)
df[df['survived'] == 1.0].isnull().sum()
Out[5]:
pclass         0
survived       0
name           0
sex            0
age           73
sibsp          0
parch          0
ticket         0
fare           0
cabin        307
embarked       2
boat          23
body         500
home.dest    153
dtype: int64
In [6]:
df[df['survived'] == 0.0].isnull().sum()
Out[6]:
pclass         0
survived       0
name           0
sex            0
age          190
sibsp          0
parch          0
ticket         0
fare           1
cabin        707
embarked       0
boat         800
body         688
home.dest    411
dtype: int64

2. Wnioski z analizy pojedynczych zmiennych:¶

Ze wzgledu na sposob rozmieszczenia pasazerow na statku, trzeba rozpatrywac kazda klase pasazerow osobno. Rzut oka na ponizsze wykresy pokazuje nam jasno, ze kobiety z I i II klasy zostaly uratowane prawie w 100%. Z tego, co pamietam, jedyne nie uratowane dziecko z klasy I to 2-letnia dziewczynka, ktora zgubila sie gdzies rodzicom. Poszli jej szukac i cala trojka przepadla. Kilka kobiet nie chcialo opuscic swoich mezow, a jedna ukochanego psa i zostala potem odnaleziona zamarznieta w wodzie nadal trzymajac w ramionach swojego rownie zamarznietego pupila. Ale sa to jednostkowe przypadki. Generalnie, bycie kobieta lub dzieckiem do 15 roku zycia z klasy I lub II praktycznie gwarantowalo ocalenie. Inaczej przedstawia sie sytuacja w klasie III. Tutaj szanse na uratowanie w przypadku bycia kobieta lub dzieckiem oscylowaly w granicach 50%.

Jesli natomiast chodzi o mezczyzn, to mamy tutaj prawdziwa hekatombe. Przezylo ich bardzo niewielu. Choc widac pewne prawidlowosci. Po pierwsze, procentowy udzial ocalonych byl tym wyzszy, im do wyzszej klasy nalezeli. Po drugie, najwiecej ocalalo mlodych mezczyzn, do 35 roku zycia. Oprocz I klasy starsi ocaleni mezczyzni to jedynie pojedyncze przypadki. W ten sposob uzyskalismy odpowiedzi na nasze pierwsze trzy pytania:

1. Jaki wplyw na zwiekszenie szansy przezycia mial wiek?¶

Bardzo duzy. Jesli chodzi o mezczyzn, to ocaleli przede wszystkim mlodzi. We wszystkich klasach srednia wieku ocalonych byla znaczaco nizsza niz srednia wieku pasazerow przed katastrofa. W przypadku II klasy srednia ta spadla nawet z 31 do 17 lat.

2. Czy plec miala znaczenie?¶

Decydujace! Przezylo przeszlo 95% kobiet z I klasy, prawie 90% z klasy II i juz tylko polowa kobiet z III klasy. W przypadku mezczyzn, przezylo tylko 35% z I klasy i po 15% z klasy II i III. Wciaz jednak nie wiemy: dlaczego? Odpowiedzia na to pytanie zajmiemy sie za chwile.

3. Czy znaczenie miala przynaleznosc do danej klasy?¶

Oczywiscie, jak najbardziej. Ocalalo 62% pasazerow z I klasy, 43% z II klasy i juz tylko 25% z III klasy.

4. Czy posiadanie malzonka lub rodzenstwa zwieksza szanse na przezycie?¶

Obliczajac spomiedzy pasazerow posiadajacych rodzenstwo lub wspolmalzonka procent tych ktorzy zostali uratowani do tych, ktorym sie nie udalo, dochodzimy do wniosku, ze owe proporcje sa troszke wieksze w porownaniu z proporcjami dla ogolu populacji pasazerow. I tak w klasie I jest to 71% do 62%, w II klasie 53% do 43%, a w III klasie 26% do 25%. Oznacza to, ze posiadanie malzonka lub rodzenstwa zwieksza, choc jedynie o kilka-kilkanascie procent szanse na przezycie. Tym niemniej, lepiej takie zwiekszenie szans niz zadne. Choc musze przyznac, ze spodziewalem sie bardziej spektakularnych wynikow. Niniejszym hipoteza z punktu 4 zostala, choc "z pewna taka niesmialoscia", to jednak potwierdzona.

5. Czy posiadanie dzieci lub rodzicow zmniejsza szanse na ocalenie?¶

Absolutnie nie! W przypadku posiadania rodzicow lub dzieci, czyli osob pod nasza opieka, nasze szanse na ocalenie paradoksalnie rosna. I proporcje te wynosza odpowiednio 73% do 62% w I klasie, 77% do 43% w II klasie i 32% do 25% w klasie III. Co oznacza, ze posiadanie dzieci lub rodzicow nie tylko, ze nie jest obciazeniem, ale znaczaco zwieksza nasze szanse na ocalenie, bo od 20 do az 80%! Oznacza to calkowite obalenie hipotezy zawartej w punkcie 5.

7. Czy to, po ktorej stronie statku (prawej lub lewej) czekalo sie na wejscie do szalupy, mialo jakis wplyw na zwiekszanie szans na ocalenie?¶

Okazuje sie, ze tak! Z lewej burty do szalup weszlo jedynie 216 osob, podczas gdy z prawej burty az 251, czyli o przeszlo 15% wiecej. Czyli tak z pozoru blaha i nieistotna sprawa jak to, z ktorej strony statku probowalismy sie dostac do szalup, moze powaznie zwiekszyc lub zmniejszyc nasze szanse na ratunek. W wiekszym nawet stopniu niz posiadanie uczynnego meza lub pomocnego brata. Dowiedzmy sie zatem, dlaczego tak sie stalo?

In [7]:
# ocaleni w podziale na plec i klase (w procentach)
# -------------------------------------------------

# grupowanie danych wedlug klasy i plci
grouped = df.groupby(['pclass', 'sex'])

# obliczanie liczby wszystkich pasazerow w kazdej grupie
total_counts = grouped.size().reset_index(name='total')

# obliczanie liczby osob, ktore przezyly w kazdej grupie
survived_counts = grouped['survived'].sum().reset_index(name='survived')

# zlaczenie obliczonych danych
merged = pd.merge(total_counts, survived_counts, on=['pclass', 'sex'])

# obliczanie procentowego udzialu osob, ktore przezyly
merged['survival_rate'] = ((merged['survived'] / merged['total']) * 100).round(1)

# tworzenie DataFrame dla sumowania wierszy Total
totals = merged.groupby('pclass').sum(numeric_only=True).reset_index()
totals['sex'] = 'Total'
totals['survival_rate'] = ((totals['survived'] / totals['total']) * 100).round(1)

# dodawanie linii sumujacych dla kazdej klasy
final_df = pd.concat([merged, totals], ignore_index=True)

# sortowanie wedlug klasy i plci (tak, zeby "Total" pojawialo sie na koncu kazdej klasy)
final_df['sex'] = pd.Categorical(final_df['sex'], categories=['female', 'male', 'Total'], ordered=True)
final_df = final_df.sort_values(by=['pclass', 'sex']).reset_index(drop=True)

# i voila!
final_df
Out[7]:
pclass sex total survived survival_rate
0 1.0 female 144 139.0 96.5
1 1.0 male 179 61.0 34.1
2 1.0 Total 323 200.0 61.9
3 2.0 female 106 94.0 88.7
4 2.0 male 171 25.0 14.6
5 2.0 Total 277 119.0 43.0
6 3.0 female 216 106.0 49.1
7 3.0 male 493 75.0 15.2
8 3.0 Total 709 181.0 25.5
In [8]:
# statystyki wieku dla mezczyz (poczatkowe i po ocaleniu)
# -------------------------------------------------------

# filtrowanie danych: wszyscy mezczyzni
all_males = df[df['sex'] == 'male']

# filtrowanie danych: tylko mezczyzni ktorzy przezyli
survived_males = all_males[all_males['survived'] == 1.0]

# funkcja liczaca statystyki z zaokragleniem
def compute_stats(grouped):
    stats = grouped.agg(['mean', 'std', 'median', lambda x: x.quantile(0.25), lambda x: x.quantile(0.75)])
    stats.columns = ['mean', 'std', 'median', 'Q1', 'Q3']
    return stats.round()

# grupowanie danych wg klas i obliczanie statystyk
statistics_all = compute_stats(all_males.groupby('pclass')['age'])
statistics_survived = compute_stats(survived_males.groupby('pclass')['age'])

# i wynik
print("Statystyki dla wszystkich mezczyzn:")
print(statistics_all.to_string(index=True))
print("\nStatystyki dla mezczyzn, ktorzy przezyli:")
print(statistics_survived.to_string(index=True))
Statystyki dla wszystkich mezczyzn:
        mean   std  median    Q1    Q3
pclass                                
1.0     41.0  15.0    42.0  30.0  50.0
2.0     31.0  14.0    30.0  23.0  39.0
3.0     26.0  12.0    25.0  20.0  32.0

Statystyki dla mezczyzn, ktorzy przezyli:
        mean   std  median    Q1    Q3
pclass                                
1.0     36.0  15.0    36.0  27.0  48.0
2.0     17.0  17.0    19.0   2.0  30.0
3.0     22.0  11.0    25.0  18.0  29.0
In [9]:
# rysowanie wyrabistych wykresow
#--------------------------------

# ustawienia stylu wykresow
sns.set(style="whitegrid")

# tworzenie subplotow dla wszystkich wykresow
fig, axs = plt.subplots(3, 2, figsize=(18, 15), sharey=False)

# kolory dla kazdej z klas
colors = {
    1.0: {'all': 'darkgray', 'survived': 'blue'},
    2.0: {'all': 'darkgray', 'survived': 'green'},
    3.0: {'all': 'darkgray', 'survived': 'red'}
}

# dodanie odstepu miedzy wykresami
plt.subplots_adjust(wspace=0.05, hspace=0.5)

# tworzenie wykresow dla kobiet oraz mezczyzn w poszczegolnych klasach
for i, pclass in enumerate([1.0, 2.0, 3.0]):
    df_class = df[df['pclass'] == pclass]

    ax_female = axs[i, 0]
    ax_male = axs[i, 1]

    females = df_class[df_class['sex'] == 'female']
    males = df_class[df_class['sex'] == 'male']

    # histogram dla kobiet
    all_females = females['age']
    survived_females = females[females['survived'] == 1.0]['age']

    ax_female.hist(all_females.dropna(), bins=range(0, 81, 5), color=colors[pclass]['all'], label='Kobiety', alpha=0.7, width=4)
    ax_female.hist(survived_females.dropna(), bins=range(0, 81, 5), color=colors[pclass]['survived'], label='Kobiety ktore przezyly', alpha=0.7, width=4)
    ax_female.set_title(f'Klasa {int(pclass)} Kobiety', fontsize=16)
    ax_female.set_xlabel('Wiek (w latach)', fontsize=16)
    ax_female.set_ylabel('Ilość pasażerów', fontsize=16)

    if i < 2:  # zmieniamy skalę pionowa na 30 dla dwoch pierwszych rzedow
        ax_female.set_ylim(0, 30)
    elif i == 2:  # zmieniamy skale dla trzeciego rzedu dla kobiet na 40
        ax_female.set_ylim(0, 40)
    ax_female.legend(fontsize=14)

    # histogram dla mezczyzn
    all_males = males['age']
    survived_males = males[males['survived'] == 1.0]['age']

    ax_male.hist(all_males.dropna(), bins=range(0, 81, 5), color=colors[pclass]['all'], label='Mezczyzni', alpha=0.7, width=4)
    ax_male.hist(survived_males.dropna(), bins=range(0, 81, 5), color=colors[pclass]['survived'], label='Mezczyzni ktorzy przezyli', alpha=0.7, width=4)
    ax_male.set_title(f'Klasa {int(pclass)} Mezczyzni', fontsize=16)
    ax_male.set_xlabel('Wiek (w latach)', fontsize=16)
    ax_male.set_ylabel('Ilosc pasazerow', fontsize=16)

    if i < 2:  # zmieniamy skale pionowa na 30 dla dwoch pierwszych rzedow
        ax_male.set_ylim(0, 30)
    elif i == 2:  # zostawiamy wyzsza skale dla trzeciego rzedu na 90
        ax_male.set_ylim(0, 90)
    ax_male.legend(fontsize=14)

    # dodanie poziomych linii na wszystkich wykresach
    ax_female.yaxis.grid(True, linestyle='-', which='both', color='grey', alpha=0.7)
    ax_male.yaxis.grid(True, linestyle='-', which='both', color='grey', alpha=0.7)

plt.tight_layout(rect=[0, 0, 1, 0.95])
plt.show()
No description has been provided for this image
In [10]:
# liczenie szans na przezycie dzieciatych i mezatych
# --------------------------------------------------

# funkcja obliczanie procentow osob ktore przezyly do tych ktore nie przezyly
def calculate_percentage(survived_count, non_survived_count):
    total = survived_count + non_survived_count
    survived_percentage = ((survived_count / total) * 100)
    non_survived_percentage = ((non_survived_count / total) * 100)
    return survived_percentage, non_survived_percentage

# inicjalizacja slownikow do przechowywania rezultatow
sibs_results = {}
parch_results = {}

# zdefiniowanie listy klas
classes = [1.0, 2.0, 3.0]

# Loop
for cls in classes:
    survived_sibs = df[(df['survived'] == 1.0) & (df['sibsp'] > 0) & (df['pclass'] == cls)].shape[0]
    non_survived_sibs = df[(df['survived'] == 0.0) & (df['sibsp'] > 0) & (df['pclass'] == cls)].shape[0]
    sibs_results[cls] = calculate_percentage(survived_sibs, non_survived_sibs)

    survived_parch = df[(df['survived'] == 1.0) & (df['parch'] > 0) & (df['pclass'] == cls)].shape[0]
    non_survived_parch = df[(df['survived'] == 0.0) & (df['parch'] > 0) & (df['pclass'] == cls)].shape[0]
    parch_results[cls] = calculate_percentage(survived_parch, non_survived_parch)

# i wyniczki
print("\nPasazerowie z rodzenstwem lub wspolmalzonkiem:\n")
for cls, res in sibs_results.items():
    print(f"Klasa {cls}: Survived {round(res[0])}%, Not Survived {round(res[1])}%")

print("\nPasazerowie z dziecmi badz rodzicami:\n")
for cls, res in parch_results.items():
    print(f"Klasa {cls}: Survived {round(res[0])}%, Not Survived {round(res[1])}%")
Pasazerowie z rodzenstwem lub wspolmalzonkiem:

Klasa 1.0: Survived 71%, Not Survived 29%
Klasa 2.0: Survived 53%, Not Survived 47%
Klasa 3.0: Survived 26%, Not Survived 74%

Pasazerowie z dziecmi badz rodzicami:

Klasa 1.0: Survived 73%, Not Survived 27%
Klasa 2.0: Survived 77%, Not Survived 23%
Klasa 3.0: Survived 32%, Not Survived 68%
In [11]:
# dodanie kolumny 'burta': prawa i lewa
#-------------------------------------

# funkcja okreslajaca wartosci dla nowej kolumny 'burta'
def determine_burta(boat):
    if boat in ['2', '4', '6', '8', '10', '12', '14', '16', 'B', 'D']:
        return 'L'
    elif boat in ['1', '3', '5', '7', '9', '11', '13', '15', 'A', 'C']:
        return 'P'
    else:
        return None

# Dodawanie nowej kolumny 'burta' do bazy danych
df['burta'] = df['boat'].apply(determine_burta)
In [12]:
# ocaleni z lewej burty
survived_left_df = df[(df['survived'] == 1.0) & (df['burta'] == 'L')].shape[0]
print(survived_left_df)
216
In [13]:
# ocaleni z prawej burty
survived_right_df = df[(df['survived'] == 1.0) & (df['burta'] == 'P')].shape[0]
survived_right_df
Out[13]:
251

3. Wnioski z analizy demograficznej poszczegolnych szalup:¶

Do tej pory rozpatrywalismy nasze dane w sposob statyczny. Tyle a tyle osob uratowanych, tyle a tyle nie uratowanych. Jednak pasazerowie nie zostali przeciez uratowani w mgnieniu oka. To byl rozciagniety w czasie proces. Szalupy byly kolejno wypelniane ludzmi i spuszczane na wode. Minuta po minucie, godzina po godzinie. Ciekawe do jakich wnioskow dojdziemy, jesli bedziemy rozpatrywac proces ratowania pasazerow jako charakteryzujacy sie pewna dynamika, zmieniajacy sie w czasie.

Wyobrazmy to sobie. Z kazda chwila Titanic coraz bardziej sie zanurza. Poklad juz nie jest zupelnie poziomy, ale przechyla sie w strone pograzonego w wodzie dziobu. Juz na pewno wiadomo, ze statek zatonie. Zimne powietrze przeszywa od czasu do czasu przerazliwy gwizd pary spuszczanej z kotlow, zeby nie wybuchy w zetknieciu z lodowata woda. Deski pokladu skrzypia pod naporem setek nog. Wzrasta napiecie. Marynarze coraz szybciej spuszczaja na wode kolejne szalupy. Niektorzy pasazerowie glosno sie modla, ktos inny klnie na czym swiat stoi. Orkiestra gra coraz bardziej smutne i pobozne piesni. Duchowni spowiadaja ludzi i intonuja modlitwy. Wszak wszyscy zaraz staniemy przed obliczem Pana. Niektorzy pasazerowie w spokoju godza sie z losem, inni rozpaczliwie szukaja ratunku. Grozba zblizajacej sie smierci z kazda minuta staje sie coraz bardziej realna. Ludzi zaczyna ogarniac panika. W takich okolicznosciach ujawniaja sie najlepsze i najgorsze cechy naszego charakteru.

6. Czy jest jakis zwiazek pomiedzy numerem szalupy, a klasa lub plcia?¶

Patrzac na ponizsze wykresy widzimy wyraznie jak zmienial sie w czasie sklad osobowy pasazerow umieszczanych w szalupach. W pierwszych siedmiu, ktore zostaly zwodowane, znajduja sie niemal wylacznie w 100% przedstawiciele klasy I. Nastepnie mamy lodz nr 16, ktora jest tutaj silna anomalia jako wypelniona jedynie przedstawicielami klasy III. W nastepnych czterech lodziach za to przewazaja zdecydowanie przedstawiciele klasy II, z niewielkimi, kilkuosobowymi dopelnieniami z pozostalych klas. W kolejnych lodziach zaczynaja juz gorowac osoby z klasy III. Prawdopodobnie na skutek tego, ze "skonczyly sie" kobiety i dzieci z klas wyzszych. Przez "skonczyly sie" rozumiem oczywiscie, ze nie bylo ich juz wiecej na pokladzie ewakuacyjnym. Ostatnich kilka lodzi jest juz wypelnionych dosc losowo, z dominujaca jednak grupa klasy III. Rozklad klasowy jest swietnie widoczny zwlaszcza w przypadku lodzi opuszczanych z prawej burty. Dowodca odpowiedzialnym za wypelnianie i opuszczanie szalup po tej stronie byl pierwszy oficer Murdoch. Jak widac mocno przestrzegal on porzadku, a przy tym uratowal kilkudziesieciu pasazerow wiecej niz dowodzacy po lewej stronie, drugi oficer Lightoller. Liczac rowniez czlonkow zalogi, Murdoch ocalil przeszlo 100 osob wiecej. Jak wiec widac, porzadek podczas ewakuacji daje plus jeden do ratunku.

Ciekawa rzecz pokazuja nam wykresy dotyczace plci ratowanych osob w podziale na szalupy. Widac tutaj ogromna dysproporcje pomiedzy szalupami spuszczanymi z prawej, a tymi z lewej burty. Wynikalo to z faktu roznej interpretacji rozkazu kapitana Smitha o ratowaniu kobiet i dzieci. Drugi oficer Lightoller, ktory nadzorowal opuszczanie szalup z lewej strony (backburty), zinterpretowal polecenie kapitana jako: TYLKO kobiety i dzieci, podczas gdy pierwszy oficer Murdoch, kierujacy opuszczaniem szalup z prawej strony (sterburty) jako: NAJPIERW kobiety i dzieci. Przez co w "jego" szalupach wolne miejsca byly zajmowane rowniez przez mezczyzn. To wlasnie dzieki temu, ostatecznie ocalil wiecej osob. Czyli to nie slepe wykonywanie rozkazow, ale elastyczne ich dopasowanie do zmieniajacych sie okolicznosci, zwieksza szanse na ocalenie.

Analiza skladu osobowego kolejno wodowanych lodzi ratunkowych.¶

Schemat rozmieszczenia szalup na pokladzie¶

rozmieszczenie lodzi ratunkowych.jpg

Czasy wodowania poszczegolnych szalup¶

Czas zwodowania Numer szalupy Pojemnosc standardowa Pojemnosc w momencie opuszczania
00:40 7 65 28
00:45 5 65 36
00:55 3 65 32
01:00 8 65 25
01:05 1 40 12
01:10 6 65 22
01:20 16 65 53
01:25 14 65 40
01:30 9 65 40
01:30 12 65 42
01:35 11 65 50
01:35 13 65 55
01:40 15 65 68
01:45 2 40 17
01:50 10 65 57
01:50 4 65 30
02:00 C 47 43
02:05 D 47 20
02:14 A 47 12
02:15 B 47 12
------------------------------------------------------------------ ------------------------------------------------------------------ ------------------------------------------------------------------ ------------------------------------------------------------------
Calkowite ilosci: 20 1178 686

Ostatnie tratwy: A i B nie zostaly zwodowane, ale po prostu zmyte przez fale z pokladu juz zanurzajacego sie Titanica. Tratwa A nabrala duzo wody i pasazerowie, ktorym udalo sie do niej doplynac i wejsc, musieli stac po kolana w wodzie. Przeszlo polowa z nich zmarla z wyziebienia. Tratwa B z kolei przewrocila sie do gory dnem i tylko kilkanascie osob zdolalo sie na nia wdrapac i jakos utrzymac. Byl miedzy nimi drugi oficer Lightoller, ktory dysponowal gwizdkiem. To ich uratowalo, gdyz wlasnie jego gwizdek uslyszaly ekipy ratunkowe, ktore juz zawracaly uznajac, ze nie znajda wiecej zywych rozbitkow. Jak widac gwizdek daje plus jeden do ratunku.

Musimy do kolejnosci spuszczanych lodzi wprowadzic pewna korekte. Mianowicie lodz nr 4 zaczela byc spuszczana jako jedna z pierwszych, jeszcze przed lodzia nr 6, ale zostala zatrzymana na poziomie pokladu A, skad zabierala jeszcze pasazerow. Ostatecznie wiec zostala zwodowana jako jedna z ostatnich. Jednak z uwagi na to, ze wazniejszy jest dla nas sam moment wchodzenia pasazerow do lodzi, a nie jej kontakt z woda, uznalem, ze taka zmiana ma sens.

Niech nas nie zwiedzie rowniez absurdalnie wrecz niewielkie wypelnienie niektorych lodzi, jak na przyklad szalupy nr 1. Nie zapominajmy, ze oprocz pasazerow uratowalo sie takze 212 czlonkow zalogi. Musieli sie oni gdzies pomiescic. Do kazdej z szalup standardowo przydzielano po 4 marynarzy do obslugi wiosel i jednego podoficera bardz mlodszego oficera jako dowodce lodzi. Akurat w przypadku lodzi nr 1 zabrala ona dodatkowo 10 palaczy (oczywiscie nie papierosow, tylko obslugi kotlow parowych), ktorzy wlasnie wydostali sie na poklad ewakuacyjny szybem wentylacyjnym uciekajac ze swojej zalewanej przez wode kotlowni.

In [14]:
# czadowe wykresy pokazujace rozklad klas w poszczegolnych lodziach
# -----------------------------------------------------------------

# funkcja obliczajaca liczbe pasazerow dla kazdej klasy w kazdej z lodzi
def count_passengers_by_class(df, boat_order):
    results = []
    for boat in boat_order:
        for cls in [1.0, 2.0, 3.0]:
            count = len(df[(df['boat'] == boat) & (df['pclass'] == cls)])
            results.append({'boat': boat, 'class': cls, 'count': count})
    return pd.DataFrame(results)

# kolejnosc wodowania szalup
boat_order = ['7', '5', '3', '8', '1', '4', '6', '16', '14', '9', '12', '11', '13', '15', '2', '10', 'C', 'D', 'A', 'B']

# liczenie pasazerow wedlug klasy i lodzi
data = count_passengers_by_class(df, boat_order)

# filtracja danych na prawa i lewa burte
data_right = data[data['boat'].isin([boat for boat in boat_order if determine_burta(boat) == 'P'])]
data_left = data[data['boat'].isin([boat for boat in boat_order if determine_burta(boat) == 'L'])]

# tworzenie subplots
fig, axes = plt.subplots(1, 3, figsize=(18, 4), gridspec_kw={'width_ratios': [2, 1, 1]})

# funkcja do rysowania wykresow
def plot_barchart(data, ax, title):
    sns.barplot(x='boat', y='count', hue='class', data=data, palette={1.0: 'blue', 2.0: 'green', 3.0: 'red'}, ax=ax, legend=False)
    ax.set_title(title)
    ax.set_ylabel('Liczba pasazerow' if title == '' else '')
    ax.set_xlabel('Numer szalupy')
    for label in ax.get_xticklabels():  # Dodane linie
        label.set_fontweight('bold')    # aby wyboldować etykiety osi X
    ax.grid(False, axis='x')
    ax.grid(True, axis='y', linestyle=':', linewidth=1, color='black', alpha=0.5)

# wykres 1: wszystkie lodzie
plot_barchart(data, axes[0], 'Ilosc pasazerow w kolejnych wodowanych lodziach w podziale na klasy')

# pobieranie etykiet z pierwszego wykresu
handles, labels = axes[0].get_legend_handles_labels()

# wykres 2: tylko lodzie z prawej burty
plot_barchart(data_right, axes[1], 'Tylko z prawej burty')

# wykres 3: tylko lodzie z lewej burty
plot_barchart(data_left, axes[2], 'Tylko z lewej burty')

# ustawienia osi Y
for ax in axes[1:]:
    ax.set_yticks(axes[0].get_yticks())
    ax.set_ylabel('')

# dodanie legendy
legend_patches = [
    Patch(facecolor='blue', label='Klasa 1'),
    Patch(facecolor='green', label='Klasa 2'),
    Patch(facecolor='red', label='Klasa 3')
]
fig.legend(handles=legend_patches, loc='upper center', ncol=1, title='Legenda')

plt.tight_layout()
plt.show()
No description has been provided for this image
In [15]:
# wyrabista funkcja pokazujaca rozklad plci i dzieci w poszczegolnych lodziach
# ----------------------------------------------------------------------------

# funkcja obliczajaca liczbe pasazerow wedlug plci i wieku w kazdej z lodzi
def count_passengers_by_sex_and_age(df, boat_order):
    results = []
    for boat in boat_order:
        for sex in ['female', 'male']:
            total_count = len(df[(df['boat'] == boat) & (df['sex'] == sex)])
            children_count = len(df[(df['boat'] == boat) & (df['sex'] == sex) & (df['age'] < 15)])
            results.append({'boat': boat, 'sex': sex, 'total_count': total_count, 'children_count': children_count})
    return pd.DataFrame(results)

# liczenie pasazerow wedlug plci i wieku
data_sex_age = count_passengers_by_sex_and_age(df, boat_order)

# filtracja danych na prawej i lewej burcie
data_right_sex = data_sex_age[data_sex_age['boat'].isin([boat for boat in boat_order if determine_burta(boat) == 'P'])]
data_left_sex = data_sex_age[data_sex_age['boat'].isin([boat for boat in boat_order if determine_burta(boat) == 'L'])]

# tworzenie subplots
fig, axes = plt.subplots(1, 3, figsize=(18, 4), gridspec_kw={'width_ratios': [2, 1, 1]})

# funkcja do rysowania wykresow
def plot_barchart_by_sex(data, ax, title):
    colors = {'female': 'deeppink', 'male': 'deepskyblue'}

    # tworzenie wskaznika szerokosci slupkow
    bar_width = 0.4
    boats = data['boat'].unique()

    for sex in ['female', 'male']:
        sex_data = data[data['sex'] == sex]
        x = [i + (-bar_width/2 if sex == 'female' else bar_width/2) for i in range(len(boats))]
        ax.bar(x, sex_data['total_count'], bar_width, color=colors[sex], label='Kobiety' if sex == 'female' else 'Mezczyzni')
        for index, row in enumerate(sex_data.iterrows()):
            ax.bar(x[index], row[1]['children_count'], bar_width, color=colors[sex], hatch='//', edgecolor='black')

    ax.set_title(title)
    ax.set_ylabel('Liczba pasazerow' if title == '' else '')
    ax.set_xlabel('Numer szalupy')
    ax.set_xticks(range(len(boats)))
    ax.set_xticklabels(boats)
    for label in ax.get_xticklabels():
        label.set_fontweight('bold')
    ax.grid(False, axis='x')
    ax.grid(True, axis='y', linestyle=':', linewidth=1, color='black', alpha=0.5)

# wykres 1: wszystkie lodzie
plot_barchart_by_sex(data_sex_age, axes[0], 'Ilosc pasazerow w kolejnych wodowanych lodziach w podziale na plec')

# wykres 2: tylko lodzie z prawej burty
plot_barchart_by_sex(data_right_sex, axes[1], 'Tylko z prawej burty')

# wykres 3: tylko lodzie z lewej burty
plot_barchart_by_sex(data_left_sex, axes[2], 'Tylko z lewej burty')

# ustawienia osi Y
for ax in axes[1:]:
    ax.set_yticks(axes[0].get_yticks())
    ax.set_ylabel('')

# dodanie legendy
handles, labels = axes[0].get_legend_handles_labels()
handles.append(Patch(facecolor='white', hatch='//', edgecolor='black', label='Dzieci'))
fig.legend(handles=[handles[0], handles[1], handles[-1]], labels=['Kobiety', 'Mezczyzni', 'Dzieci'], loc='upper center', ncol=1, title='Legenda')

plt.tight_layout()
plt.show()
No description has been provided for this image

4. Podsumowanie¶

W toku analizy odpowiedzielismy sobie na wszystkie postawione na poczatku pytania i hipotezy. Wiemy juz, ze bycie kobieta lub dzieckiem w klasie I lub II dawalo ogromne, prawie stu procentowe szanse na przyzycie. Wynikalo to oczywiscie z owczesnych norm spolecznych, w ktorych to kobietom, jako slabej plci, nalezalo bezwzglednie ustepowac miejsca, przepuszczac przodem czy wstawac, gdy podchodzily do stolu. Ciekawe, czy w dzisiejszych czasach, panowie nadal zachowaliby sie rownie szarmancko? Zwlaszcza gdyby w gre wchodzilo ich zycie, a nie tylko zwykla kurtuazja. Co prawda, nawet na Titanicu oficerowie nadzorujacy ewakuacje pasazerow, musieli kilkukrotnie uzywac broni, by wymusic porzadek i odpedzic mezczyzn z "dolow spolecznych" przed wtargnieciem do szalup, gdy wsiadaly do nich panie. Ciekawe rowniez, czy na wspolczesnych, duzych liniowcach, w przypadku ataku piratow, zamachu terrorystycznego czy ostrzalu rakietowego przez Hutich, bilet pierwszej klasy nadal bylby przepustka do ocalenia? A zreszta nawet jesli nie, to i tak pewnie chyba lepiej byc bogatym :-)

Wracajac jeszcze do Titanica, tak wielu pasazerow III klasy zginelo, gdyz nie byli w stanie po prostu wydostac sie na poklad. Stewardzi, ktorzy jako jedyni posiadali klucze do krat odgradzajacych pasazerow III klasy od reszty statku, byli mocno zajeci budzeniem pasazerow wyzszych klas, rozdawaniem im kamizelek ratunkowych, kierowaniem na poklad ewakuacyjny i do kolejnych szalup, szukaniem zagubionych dzieci, itp. Skutkiem tego, jak wynika to z licznych relacji ocalalych, czesc krat do samego konca pozostala zamknieta. Jezeli juz wiec w koncu pasazerom III klasy jakos udalo sie wydostac z wnetrza statku i w plataninie zalewanych przez wode korytarzy trafic na najwyzej polozony poklad ewakuacyjny, to i tak wiekszosc szalup juz odplynela.

Na koniec mala ciekawostka: otoz film "Titanic" z 1997 roku w rezyserii Jamesa Camerona z Leonardo di Caprio i Kate Winslet w rolach glownych, byl drozszy w produkcji (w przeliczeniu na dzisiejsze pieniadze) niz wybudowanie w 1911 roku samego Titanica".

In [ ]: